home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ccdl150l.zip / SORT / QSORT.SRC < prev   
Text File  |  1997-03-18  |  2KB  |  134 lines

  1.     SECTION    code
  2.     XDEF    _qsort
  3. ;
  4. ; Line 6:    {
  5. ;
  6. _qsort:
  7.     LINK    A6,#$0
  8.     MOVEM.L    D3/D4/D5/D6/D7/A2/A3/A4,-(A7)
  9.     LEA    (_memcpy,PC),A2
  10. ;
  11. ; Line 8:        void *buf = malloc(width);
  12. ;
  13.     MOVE.L    D3,-(A7)
  14.     BSR    _malloc
  15.     ADDQ.W    #$4,A7
  16.     MOVEA.L    D0,A4
  17. ;
  18. ; Line 9:        char *wp1 = base;
  19. ;
  20.     MOVE.L    ($8,A6),D4
  21. ;
  22. ; Line 10:        if (!buf)
  23. ;
  24.     MOVE.L    A4,D0
  25.     BNE    L_0
  26. ;
  27. ; Line 11:            return;
  28. ;
  29.     BRA    L_2
  30. L_0:
  31.     MOVEA.W    #$0,A3
  32.     BRA    L_5
  33. L_3:
  34. ;
  35. ; Line 13:            char *wp2 = wp1 + width;
  36. ;
  37.     MOVE.L    D4,D0
  38.     ADD.L    D3,D0
  39.     MOVE.L    D0,D6
  40.     MOVE.L    A3,D0
  41.     ADDQ.L    #$1,D0
  42.     MOVE.L    D0,D5
  43.     BRA    L_8
  44. L_6:
  45. ;
  46. ; Line 15:                if ((*compare)(wp1,wp2) >0) {
  47. ;
  48.     MOVE.L    D6,-(A7)
  49.     MOVE.L    D4,-(A7)
  50.     MOVEA.L    ($14,A6),A0
  51.     MOVEA.L    (A0),A0
  52.     JSR    (A0)
  53.     ADDQ.W    #$8,A7
  54.     CMPI.L    #$0,D0
  55.     BLE    L_9
  56. ;
  57. ; Line 16:                    memcpy(buf,wp1,width);
  58. ;
  59.     MOVE.L    D3,-(A7)
  60.     MOVE.L    D4,-(A7)
  61.     MOVE.L    A4,-(A7)
  62.     BSR    _memcpy
  63.     LEA    ($C,A7),A7
  64. ;
  65. ; Line 17:                    memcpy(wp1,wp2,width);
  66. ;
  67.     MOVE.L    D3,-(A7)
  68.     MOVE.L    D6,-(A7)
  69.     MOVE.L    D4,-(A7)
  70.     BSR    _memcpy
  71.     LEA    ($C,A7),A7
  72. ;
  73. ; Line 18:                    memcpy(wp2,buf,width);
  74. ;
  75.     MOVE.L    D3,-(A7)
  76.     MOVE.L    A4,-(A7)
  77.     MOVE.L    D6,-(A7)
  78.     BSR    _memcpy
  79.     LEA    ($C,A7),A7
  80. ;
  81. ; Line 19:                }
  82. ;
  83. L_9:
  84. ;
  85. ; Line 20:                wp2 += width;
  86. ;
  87.     ADD.L    D3,D6
  88. ;
  89. ; Line 21:            }
  90. ;
  91.     ADDQ.L    #$1,D5
  92. L_8:
  93. ;
  94. ; Line 14:            for (j=i+1; j < num; j++) {
  95. ;
  96.     CMP.L    D7,D5
  97.     BLT    L_6
  98. L_7:
  99. ;
  100. ; Line 22:            wp1 += width;
  101. ;
  102.     ADD.L    D3,D4
  103. ;
  104. ; Line 23:        }
  105. ;
  106.     ADDQ.W    #$1,A3
  107. L_5:
  108. ;
  109. ; Line 12:        for (i=0; i < num-1;i++) {
  110. ;
  111.     MOVE.L    D7,D0
  112.     SUBQ.L    #$1,D0
  113.     CMPA.L    D0,A3
  114.     BLT    L_3
  115. L_4:
  116. ;
  117. ; Line 24:        free(buf);
  118. ;
  119.     MOVE.L    A4,-(A7)
  120.     BSR    _free
  121.     ADDQ.W    #$4,A7
  122. ;
  123. ; Line 26:    }
  124. ;
  125. L_2:
  126.     MOVEM.L    (A7)+,D3/D4/D5/D6/D7/A2/A3/A4
  127.     UNLK    A6
  128.     RTS
  129.     SECTION    data
  130.     SECTION    bss
  131.     XREF    _free
  132.     XREF    _memcpy
  133.     XREF    _malloc
  134.